Ansible এ কাস্টম রোল তৈরি করা হলো একটি ভালো প্র্যাকটিস, যা আপনার কোডকে সংগঠিত, পুনরায় ব্যবহারযোগ্য, এবং মডুলার করে তোলে। কাস্টম রোল তৈরি করলে আপনি আপনার প্রয়োজন অনুযায়ী নির্দিষ্ট কনফিগারেশন, টাস্ক, এবং অন্যান্য উপাদানগুলো সাজাতে পারেন।
Ansible এ কাস্টম রোল তৈরি করতে কয়েকটি ধাপ অনুসরণ করতে হয়। নিচে একটি স্টেপ-বাই-স্টেপ গাইড দেয়া হলো।
Ansible এ রোল তৈরি করতে ansible-galaxy init
কমান্ড ব্যবহার করতে পারেন। এটি স্বয়ংক্রিয়ভাবে রোলের জন্য একটি স্ট্যান্ডার্ড ডিরেক্টরি স্ট্রাকচার তৈরি করবে।
ansible-galaxy init my_custom_role
এটি my_custom_role
নামে একটি ডিরেক্টরি তৈরি করবে, যার মধ্যে প্রয়োজনীয় ফোল্ডার এবং ফাইল থাকবে। উদাহরণস্বরূপ:
my_custom_role/
├── defaults/
│ └── main.yml
├── files/
├── handlers/
│ └── main.yml
├── meta/
│ └── main.yml
├── tasks/
│ └── main.yml
├── templates/
├── vars/
│ └── main.yml
└── README.md
tasks/main.yml
)প্রথমে tasks/main.yml
ফাইলে আপনার মূল টাস্কগুলো লিখতে হবে। উদাহরণস্বরূপ, আমরা এখানে একটি Nginx
ইনস্টল এবং কনফিগার করার টাস্ক তৈরি করব:
# my_custom_role/tasks/main.yml
---
- name: Install Nginx
apt:
name: nginx
state: present
notify: Restart Nginx
- name: Copy Nginx configuration file
template:
src: nginx.conf.j2
dest: /etc/nginx/nginx.conf
notify: Reload Nginx
এই টাস্কগুলো Nginx
ইনস্টল করবে এবং একটি কনফিগারেশন ফাইল কপি করবে। আমরা দুটি হ্যান্ডলারও ব্যবহার করছি: Restart Nginx
এবং Reload Nginx
।
handlers/main.yml
)হ্যান্ডলারগুলো নির্দিষ্ট টাস্ক বা কাজ সম্পন্ন হলে রান হয়। এখন হ্যান্ডলার তৈরি করা যাক:
# my_custom_role/handlers/main.yml
---
- name: Restart Nginx
service:
name: nginx
state: restarted
enabled: yes
- name: Reload Nginx
service:
name: nginx
state: reloaded
এই হ্যান্ডলারগুলো Nginx
সার্ভিস রিস্টার্ট এবং রিলোড করার জন্য ব্যবহৃত হবে।
defaults/main.yml
)defaults
ফোল্ডারে ডিফল্ট ভ্যারিয়েবল সংরক্ষণ করা হয়, যা আপনি প্লেবুকে ওভাররাইড করতে পারবেন। উদাহরণস্বরূপ:
# my_custom_role/defaults/main.yml
---
nginx_port: 80
nginx_user: www-data
templates/nginx.conf.j2
)templates
ফোল্ডারে আপনি Jinja2 টেমপ্লেট ব্যবহার করে কনফিগারেশন ফাইল তৈরি করতে পারেন। উদাহরণস্বরূপ, nginx.conf.j2
নামে একটি টেমপ্লেট তৈরি করা যাক:
# my_custom_role/templates/nginx.conf.j2
server {
listen {{ nginx_port }};
server_name localhost;
location / {
root /var/www/html;
index index.html index.htm;
}
}
এখানে আমরা {{ nginx_port }}
নামে একটি ভ্যারিয়েবল ব্যবহার করেছি, যা defaults
বা vars
ফোল্ডার থেকে মান নিতে পারে।
vars/main.yml
)আপনি যদি অতিরিক্ত বা নির্দিষ্ট ভ্যারিয়েবল ব্যবহার করতে চান, তাহলে vars/main.yml
ফাইলে সেগুলো সংরক্ষণ করতে পারেন।
# my_custom_role/vars/main.yml
---
nginx_config_file: /etc/nginx/nginx.conf
meta/main.yml
)রোলের ডিপেন্ডেন্সি এবং মেটাডাটা meta/main.yml
ফাইলে উল্লেখ করা হয়। যদি আপনার রোল অন্য কোনো রোলের উপর নির্ভরশীল হয়, তাহলে আপনি তা এখানে উল্লেখ করতে পারেন:
# my_custom_role/meta/main.yml
---
dependencies:
- { role: common, some_variable: some_value }
রোল তৈরি এবং কনফিগার করার পর এটি আপনার প্লেবুকে ব্যবহার করা যায়:
---
- name: Deploy Nginx server using custom role
hosts: webservers
become: yes
roles:
- my_custom_role
রোল তৈরি করার পর, আপনার প্লেবুক চালিয়ে এটি টেস্ট করতে পারেন:
ansible-playbook -i inventory deploy_nginx.yml
ansible-galaxy init
দিয়ে রোল তৈরি করুন।এইভাবে কাস্টম রোল তৈরি করে আপনি Ansible প্লেবুকগুলোকে আরও ফ্লেক্সিবল, মডুলার, এবং পুনরায় ব্যবহারযোগ্য করতে পারবেন।
আরও দেখুন...